package com.atguigu.gmall.seckill.service;

import com.atguigu.gmall.mq.seckill.SeckillOrderMsg;
import com.atguigu.gmall.seckill.entity.SeckillGoods;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
* @author 10574
* @description 针对表【seckill_goods】的数据库操作Service
* @createDate 2022-12-28 01:06:23
*/
public interface SeckillGoodsService extends IService<SeckillGoods> {

    /**
     * 查询当天参与秒杀的所有商品
     * @param date
     * @return
     */
    List<SeckillGoods> getSeckillGoodsByDay(String date);
    /**
     * 缓存查询当天参与秒杀的所有商品
     * @param date
     * @return
     */
    List<SeckillGoods> getSeckillGoodsByDayFromCache(String date);

    /**
     * 当天秒杀的商品在本地缓存中保存
     * @param seckillGoods
     */
    void saveToLocalCache(List<SeckillGoods> seckillGoods);

    /**
     * 查询商品详情
     * @param skuId
     * @return
     */
    SeckillGoods getDetail(Long skuId);

    /**
     * 扣库存
     * @param id
     */
    void deduceStock(Long id);

    /**
     * 临时保存一个秒杀单
     * @param orderMsg
     */
    void saveSeckillOrder(SeckillOrderMsg orderMsg);

    /**
     * 更新redis中的库存标识
     * @param orderMsg
     */
    void updateRedisStock(SeckillOrderMsg orderMsg);
}
